export default class IsShowMixin {
  constructor(basicForm, store, model) {
    const getIsShow = () => {
      var flag = 1
      if (basicForm.value.isShow === '1') {
        // 判断基础设置内的显隐设置 如果设置不显示直接隐藏
        // isShowArr 组件含有控制其他组件显隐逻辑的数组
        store.getters.isShowArr.forEach(item => {
          // isShow: 1 显示 2 隐藏
          if (item.relaFields.filter(val => val.assoField === basicForm.value.field && val.isShow === '1').length > 0) {
            // 如果有需要控制显示的 则默认隐藏
            flag = flag * 0
          } else if (item.relaFields.filter(val => val.assoField === basicForm.value.field && val.isShow === '2').length > 0) {
            // 如果有需要字段控制隐藏的 则默认显示
            flag = flag * 1
          }
        })
      } else {
        flag = 0
      }
      return Boolean(flag)
    }
    this.isShow = getIsShow()
    this.watch = (_fn) => {
      let arr = store.getters.relaFieldsArr
      arr.forEach(item => {
        if (item.assoField === basicForm.value.field) {
          model.value[basicForm.value.field] = store.getters.currentVal.map(item1 => {
            return item1[item.valueField]
          }).join(',')
        }
      })
      // 组件  显隐  判断
      store.getters.isShowArr.forEach(item => {
        if (item.field === store.getters.currentField) {
          item.relaFields.forEach(val => {
            if (val.assoField === basicForm.value.field) {
              if (val.isShow === '1') {
                if (val.displayRegu === '1' && store.getters.currentVal[0][val.displayField] === val.value) {
                  _fn(true)
                } else if (val.displayRegu === '2' && store.getters.currentVal[0][val.displayField] !== val.value) {
                  _fn(true)
                } else {
                  _fn(false)
                }
              } else {
                if (val.displayRegu === '1' && store.getters.currentVal[0][val.displayField] === val.value) {
                  _fn(false)
                } else if (val.displayRegu === '2' && store.getters.currentVal[0][val.displayField] !== val.value) {
                  _fn(false)
                } else {
                  _fn(true)
                }
              }
            }
          })
        }
      })
    }
  }
}
